Data transfer scheme using caching technique for reducing network load

ABSTRACT

In a data transfer scheme using a caching technique and/or a compression technique which is capable of reducing the network load of a network connecting between data transfer devices, correspondences between data and their names are registered at the data transfer devices and the corresponding names are transferred, instead of transferring the data, for those data for which the correspondences are registered, so that it is possible to reduce the amount of transfer data among the data transfer devices.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a data transfer scheme for carrying outdata transfer at a data transfer device on behalf of another device.

2. Description of the Related Art

The client-server type information system formed by servers forproviding various services through a network and clients for requestingdesired services to the servers has been widely used. In particular, theWorld Wide Web system (which is also simply called Web) formed by Webservers and clients that communicate with each other by using the HTTPprotocol on the Internet is the very widely used client-server typeinformation system. Usually, a server program is operating on a serverand a prescribed tool (program) such as a browser is operating on aclient. The contents of the services provided on the Internet are alsowide ranging so that there are various existing services includingservices for providing, delivering or transferring information such asthat of text, still image, video and audio (home pages, e-mails, anddigital contents, for example) or programs, electronic shop services forselling goods, reservation services for seats, rooms, etc., agencyservices for various contracts, etc., and services in new styles areappearing steadily.

Now, in the client-server type information system such as the Web, theservice is provided basically by carrying out data transfer between theclient and the server, regardless of the style of the service to beprovided. Consequently, a capacity (bandwidth) of the network to be usedfor communications between the client and the server tends to be abottleneck of the entire system. For this reason, usually, the cachingtechnique has been used in order to reduce the network load.

In the case of the Web system, the browser or the like that is operatingon the client often uses a cache mechanism for caching recently accesseddata. In the Web, accesses are made by specifying information orservices by using names called URLs, so that among data that arereturned in response to information or services requested to the Webservers in the past, those data that are cachable are recorded in thecache on the client in correspondence with their URLs. In this case,when an information or service with the same URL as that recorded in thecache is requested, if it is possible to judge that the response datarecorded in the cache has not become obsolete, it is possible toeliminate a communication between the client and the Web server byreturning that response data recorded in the cache.

When a plurality of users are existing on a LAN inside offices of anenterprise, a LAN of a research organization or a LAN inside a home, itis also popular to provide a proxy server between that LAN and theInternet and provide the cache mechanism in the proxy server. The cacheinside the client (the cache of the browser, for example) will beoperated as a dedicated cache of that client or user, but the cache ofthe proxy server on the LAN will be operated as a cache shared by usersof the plurality of clients or users. For this reason, the cache of theproxy server works even in the case of making an access to the URLaccessed by the other (another client) in the past.

Now, in the Web, communications between the client and the server arecarried out by the protocol called HTTP. The. HTTP protocol uses a setof a “request message” to be sent from the client to the server and a“reply message” to be returned from the server to the client in responseto that request.

The request message is formed by a “request header” and a “requestbody”. The request header contains various information necessary for theaccess such as a URL for specifying an information or service to beaccessed and a method name indicating the type of access. The requestbody contains data to be sent to the server. Such data contained in therequest body are also referred to as “request data”.

The reply message is formed by a “reply header” and a “reply body”. Thereply header contains information such as a processing result status,and the reply body contains the requested information or data of theprocessing result of the requested service. Such data contained in thereply body are also referred to as “reply data”.

The major methods for the request message that are used for accesses ofinformation or services include a “GET method” that reads out aninformation on the server, a “PUT method” that writes data of the userinto the server, and a “POST method” that receives a processing resultin response to the request. Besides them, methods such as a “DELETEmethod” are also defined.

In many cases, the request body of the request message in the GET methodand the reply body of the reply message in the PUT method are empty. Therequest body of the request message in the POST message containsinformation to be used for the processing on the server side accordingto the need, and the reply body of the reply message in the POST methodcontains data obtained as a result of that processing.

The data to be read out from the server by the GET method can beclassified into “dynamic data” that are to be generated at the serverside at a time of each reading and “static data” that are to be returnedas they are already stored at the server side. Among them, the dynamicdata can possibly have different contents at different occasions ofreading even for the same URL, so that in many cases, the server returnsthe reply message with the reply header that contains an indication thatit is not cachable. Consequently, what are to be the caching targetsamong the Web data are the static data.

These static data can be classified into “shared data” that can beaccessed by unspecified many users and “private data” for which theaccess control for allowing accesses only to the specific user is to becarried out by utilizing the user authentication. The former shared dataare cachable for any caches. However, the latter private data are notcachable for a shared cache such as that of the proxy server (becausethere is a need for the server to return the private data after carryingout the user authentication). The private data are cachable in the caseof a personal dedicated cache such as that of the browser.

In the POST method, the result of processing at the server side is to bereturned so that the server returns the result by the reply message withthe reply header that contains an indication that it is not cachable ingeneral. For this reason, the reply data of the POST method are usuallynot the caching target.

In the PUT method, data are to be sent to the server so that there is noprocessing that involves the cache.

In the conventional Web cache, the caching targets are the staticcontents. Many information or services disclosed on the Web were used tobe those disclosed to unspecified many users for which the informationupdating does not occur very frequently, so that the rate of the staticcontents were very high and therefore even the conventional cachingtechnique was effective in reducing the network load.

However, in conjunction with the spread of a system in which the usermakes accesses to the information or services on the server via thenetwork by using the Web browser such as that of Web based ASP(Application Service Provider), the amount of data that cannot behandled by the conventional caching technique- is increasing. Forexample:

-   -   there are many private data for which the accessible users are        limited by carrying out the user authentication;    -   there are many dynamic data to be generated by referring to the        back-end database;    -   there are many cases of using the POST method such as those of        the accounting slip processing and the searching; and    -   there are many cases of using the PUT method for the purpose of        sharing information within a group.

As a consequence, the use of the caching technique alone has beenbecoming rather ineffective as a method for reducing the network load.

BRIEF SUMMARY OF THE INVENTION

It is therefore an object of the present invention to provide a datatransfer scheme using a caching technique, and/or a compressiontechnique which is capable of reducing the network load of a networkconnecting between data transfer devices.

According to one aspect of the present invention there is provided adata transfer device for receiving first data transmitted from a firstcommunication device, transmitting the first data to another datatransfer device connected to a second communication device that is adestination of the first data, receiving second data transmitted fromthe second communication device from the another data transfer device,and transmitting the second data to the first communication device thatis a destination of the second data, the data transfer devicecomprising: a reception unit configured to receive the first data fromthe first communication device; a cache unit configured to registercache data that were transmitted to the another data transfer device inpast, in correspondence to cache data names each of which is generatedaccording to a content of each cache data and assigned to each cachedata; a processing unit configured to carry out a processing fortransmitting a first data name that is generated according to a contentof the first data and assigned to the first data, instead oftransmitting the first data, when the first data name is registered inthe cache unit, or a processing for registering the first data incorrespondence to the first data name into the cache unit andtransmitting the first data when the first data name is not registeredin the cache unit, upon receiving the first data transmitted from thefirst communication device; and a transmission unit configured totransmit the first data name or the first data to the another datatransfer device according to a processing carried out by the processingunit.

According to another aspect of the present invention there is provided adata transfer device for receiving first data transmitted from a firstcommunication device through another data transfer device, transmittingthe first data to a second communication device that is a destination ofthe first data, receiving second data transmitted from the secondcommunication device, and transmitting the second data to the anotherdata transfer device connected to the first communication device that isa destination of the second data, the data transfer device comprising: areception unit configured to receive the first data or a first data namethat is generated according to a content of the first data and assignedto the first data, from the another data transfer device; a cache unitconfigured to register cache data that were received from the anotherdata transfer device in past, in correspondence to cache data names eachof which is generated according to a content of each cache data andassigned to each cache data; a processing unit configured to carry out aprocessing for acquiring a cache data registered in correspondence tothe first data name from the cache unit and transmitting an acquiredcache data when the first data name is received from the another datatransfer device, or a processing for registering the first data incorrespondence to the first data name to be assigned to the first datainto the cache unit and transmitting the first data when the first datais received from the another data transfer device; and a transmissionunit configured to transmit the acquired cache data or the first data tothe second communication device according to a processing carried out bythe processing unit.

According to another aspect of the present invention there is provided adata transfer method at a data transfer device for receiving first datatransmitted from a first communication device, transmitting the firstdata to another data transfer device connected to a second communicationdevice that is a destination of the first data, receiving second datatransmitted from the second communication device from the another datatransfer device, and transmitting the second data to the firstcommunication device that is a destination of the second data, the datatransfer method comprising: receiving the first data from the firstcommunication device; judging whether a first data name that isgenerated according to a content of the first data and assigned to thefirst data is registered in a cache unit configured to register cachedata that were transmitted to the another data transfer device in pastin correspondence to cache data names each of which is generatedaccording to a content of each cache data and assigned to each cachedata; and carrying out a processing for transmitting the first dataname, instead of transmitting the first data, when the first data nameis registered in the cache unit, or a processing for registering thefirst data in correspondence to the first data name into the cache unitand transmitting the first data when the first data name is notregistered in the cache unit.

According to another aspect of the present invention there is provided adata transfer method at a data transfer device for receiving first datatransmitted from a first communication device through another datatransfer device, transmitting the first data to a second communicationdevice that is a destination of the first data, receiving second datatransmitted from the second communication device, and transmitting thesecond data to the another data transfer device connected to the firstcommunication device that is a destination of the second data, the datatransfer method comprising: receiving the first data or a first dataname that is generated according to a content of the first data andassigned to the first data, from the another data transfer device; andcarrying out a processing for acquiring a cache data registered incorrespondence to the first data name from a cache unit configured toregister cache data that were received from the another data transferdevice in past in correspondence to cache data names each of which isgenerated according to a content of each cache data and assigned to eachcache data, and transmitting an acquired cache data when the first dataname is received from the another data transfer device, or a processingfor registering the first data in correspondence to the first data nameto be assigned to the first data into the cache unit and transmittingthe first data when the first data is received from the another datatransfer device.

According to another aspect of the present invention there is provided acomputer program product for causing a computer to function as a datatransfer device for receiving first data transmitted from a firstcommunication device, transmitting the first data to another datatransfer device connected to a second communication device that is adestination of the first data, receiving second data transmitted fromthe second communication device from the another data transfer device,and transmitting the second data to the first communication device thatis a destination of the second data, the computer program productcomprising: a first computer program code for causing the computer toreceive the first data from the first communication device; a secondcomputer program code for causing the computer to judge whether a firstdata name that is generated according to a content of the first data andassigned to the first data is registered in a cache unit configured toregister cache data that were transmitted to the another data transferdevice in past in correspondence to cache data names each of which isgenerated according to a content of each cache data and assigned to eachcache data; and a third computer program code for causing the computerto carry out a processing for transmitting the first data name, insteadof transmitting the first data, when the first data name is registeredin the cache unit, or a processing for registering the first data incorrespondence to the first data name into the cache unit andtransmitting the first data when the first data name is not registeredin the cache unit.

According to another aspect of the present invention there is provided acomputer program product for causing a computer to function as a datatransfer device for receiving first data transmitted from a firstcommunication device through another data transfer device, transmittingthe first data to a second communication device that is a destination ofthe first data, receiving second data transmitted from the secondcommunication device, and transmitting the second data to the anotherdata transfer device connected to the first communication device that isa destination of the second data, the computer program productcomprising: a first computer program code for causing the computer toreceive the first data or a first data name that is generated accordingto a content of the first data and assigned to the first data, from theanother data transfer device; and a second computer program code forcausing the computer to carry out a processing for acquiring a cachedata registered in correspondence to the first data name from a cacheunit configured to register cache data that were received from theanother data transfer device in past in correspondence to cache datanames each of which is generated according to a content of each cachedata and assigned to each cache data, and transmitting an acquired cachedata when the first data name is received from the another data transferdevice, or a processing for registering the first data in correspondenceto the first data name to be assigned to the first data into the cacheunit and transmitting the first data when the first data is receivedfrom the another data transfer device.

Other features and advantages of the present invention will becomeapparent from the following description taken in conjunction with theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram showing one exemplary configuration of a computernetwork system according to one embodiment of the present invention.

FIG. 2 is a diagram showing another exemplary configuration of acomputer network system according to one embodiment of the presentinvention.

FIG. 3 is a diagram showing another exemplary configuration of acomputer network system according to one embodiment of the presentinvention.

FIG. 4 is a diagram for explaining a fingerprint to be used in oneembodiment of the present invention.

FIG. 5 is a diagram for explaining a fingerprint cache to be used in oneembodiment of the present invention.

FIGS. 6A and 6B are diagrams showing exemplary message formats that canbe used in one embodiment of the present invention.

FIG. 7 is a diagram showing another exemplary message format that can beused in one embodiment of the present invention.

FIGS. 8A and 8B are diagrams showing another exemplary message formatsthat can be used in one embodiment of the present invention.

FIGS. 9A and 9B are diagrams showing another exemplary message formatsthat can be used in one embodiment of the present invention.

FIG. 10 is a diagram showing another exemplary message format that canbe used in one embodiment of the present invention.

FIG. 11 is a block diagram showing one exemplary configuration of aserver side proxy according to one embodiment of the present invention.

FIG. 12 is a block diagram showing one exemplary configuration of aclient side proxy according to one embodiment of the present invention.

FIG. 13 is a flow chart showing one exemplary processing procedure ofthe server side proxy of FIG. 11 according to one embodiment of thepresent invention.

FIG. 14 is a flow chart showing one exemplary processing procedure ofthe client side proxy of FIG. 12 according to one embodiment of thepresent invention.

FIG. 15 is a flow chart showing another exemplary processing procedureof the server side proxy of FIG. 11 according to one embodiment of thepresent invention.

FIG. 16 is a flow chart showing another exemplary processing procedureof the client side proxy of FIG. 12 according to one embodiment of thepresent invention.

FIG. 17 is a diagram for explaining one exemplary data transfer betweenthe server side proxy of FIG. 11 and the client side proxy of FIG. 12according to one embodiment of the present invention.

FIG. 18 is a diagram for explaining another exemplary data transferbetween the server side proxy of FIG. 11 and the client side proxy ofFIG. 12 according to one embodiment of the present invention.

FIG. 19 is a block diagram showing another exemplary configuration of aclient side proxy according to one embodiment of the present invention.

FIG. 20 is a flow chart showing one exemplary processing procedure ofthe client side proxy of FIG. 19 according to one embodiment of thepresent invention.

FIG. 21 is a flow chart showing another exemplary processing procedureof the client side proxy of FIG. 19 according to one embodiment of thepresent invention.

FIG. 22 is a diagram for explaining one exemplary data transfer betweenthe server side proxy of FIG. 11 and the client side proxy of FIG. 19according to one embodiment of the present invention.

FIG. 23 is a block diagram showing another exemplary configuration of aserver side proxy according to one embodiment of the present invention.

FIG. 24 is a flow chart showing one exemplary processing procedure ofthe server side proxy of FIG. 23 according to one embodiment of thepresent invention.

FIG. 25 is a flow chart showing another exemplary processing procedureof the server side proxy of FIG. 23 according to one embodiment of thepresent invention.

FIG. 26 is a block diagram showing another exemplary configuration of aserver side or client side proxy according to one embodiment of thepresent invention.

FIG. 27 is a flow chart showing one exemplary processing procedure ofthe client side proxy of FIG. 26 according to one embodiment of thepresent invention.

FIG. 28 is a flow chart showing one exemplary processing procedure ofthe server side proxy of FIG. 26 according to one embodiment of thepresent invention.

FIG. 29 is a block diagram showing another exemplary configuration of aserver side or client side proxy according to one embodiment of thepresent invention.

FIG. 30 is a diagram showing another exemplary configuration of acomputer network system according to one embodiment of the presentinvention.

FIG. 31 is a diagram showing an exemplary configuration of aconventional computer network system to which the present invention isto be applied.

FIG. 32 a diagram showing a concrete example of a message in a messageformat shown in FIG. 6A.

FIG. 33 a diagram showing a concrete example of a message in a messageformat shown in FIG. 6B.

FIG. 34 a diagram showing a concrete example of a message in a messageformat shown in FIG. 7.

FIG. 35 a diagram showing a concrete example of a message in a messageformat shown in FIG. 8A.

FIG. 36 a diagram showing a concrete example of a message in a messageformat shown in FIG. 8B.

FIG. 37 a diagram showing a concrete example of a message in a messageformat shown in FIG. 9A.

FIG. 38 a diagram showing a concrete example of a message in a messageformat shown in FIG. 9B.

FIG. 39 a diagram showing a concrete example of a message in a messageformat shown in FIG. 10.

FIG. 40 is a flow chart showing another exemplary processing procedureof the client side proxy of FIG. 12 according to one embodiment of thepresent invention.

FIG. 41 is a flow chart showing another exemplary processing procedureof the client side proxy of FIG. 12 according to one embodiment of thepresent invention.

FIG. 42 is a flow chart showing another exemplary processing procedureof the client side proxy of FIG. 12 according to one embodiment of thepresent invention.

FIG. 43 is a flow chart showing another exemplary processing procedureof the server side proxy of FIG. 11 according to one embodiment of thepresent invention.

FIG. 44 is a flow chart showing another exemplary processing procedureof the server side proxy of FIG. 11 according to one embodiment of thepresent invention.

FIG. 45 is a flow chart showing another exemplary processing procedureof the server side proxy of FIG. 11 according to one embodiment of thepresent invention.

FIG. 46 is a diagram for explaining another exemplary data transferbetween the server side proxy of FIG. 11 and the client side proxy ofFIG. 12 according to one embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Referring now to FIG. 1 to FIG. 46, one embodiment of the data transferscheme according to the present invention will be described in detail.

In the following, an exemplary case in which a WAN is the Internet,clients are connected to a user's office LAN, and the HTTP protocol isused will be described, but the present invention is also applicable tothe cases where the WAN is other than the Internet, the cases where theclients are located at LAN other than the user's office LAN such as aLAN inside a home, and the cases where the protocol other than the HTTPprotocol is to be used.

FIG. 31 shows an exemplary basic configuration of a computer networksystem to which the present invention is applied. In this exemplaryconfiguration, a local area network (LAN) 12 inside an ASP server center2 and a local area network (LAN) 16 inside a user's office 4 areconnected through a wide area network (WAN) 14 such as the Internet ordedicated line, such that a server 20 inside the ASP server center 2 anda client 50 inside the user's office 4 are capable of carrying outcommunications through the LAN 12, the WAN 14 and the LAN 16. One or aplurality of servers 20 are connected to the LAN 12 inside the ASPserver center 2 and one or a plurality of clients 50 are connected tothe LAN 16 inside the user's office 4.

The Web based ASP provides services using various application programsfrom the server 20 provided at the ASP server center 2 through the WAN14, and a user can access these services by using a Web browser or thelike on the client 50 provided at the user's office 4.

In such a configuration, the effective communication capacity(bandwidth) of the network connecting between the LAN 16 inside theuser's office 4 and the LAN 12 inside the ASP server center 2,especially that of the WAN 14 such as the Internet, is lower than thoseof the LAN 12 inside the ASP server center 12 and the LAN 16 inside theuser's office 4, so that it can become a bottleneck of the performancethat can cause the communication delay and give rise to the problem ofthe lower response performance of the applications.

For this reason, in this embodiment, as shown in FIG. 1, two modulescalled a server side proxy 30 and a client side proxy 40 are provided attwo ends of the WAN 14 that are connecting between the LAN 12 inside theASP server center 2 and the LAN 16 inside the user's office 4 and afingerprint compression (FP compression) to be described below iscarried out between them, such that the amount of communication data isreduced and the bottleneck of the wide area network is resolved.

Each one of the server 20, the server side proxy 30, the client proxy 40and the client 50 can be realized in a form of operating a software (aserver program, a server side proxy program, a client side proxyprogram, or a client program, respectively) on a computer. In this case,the computer will be provided with or connected with softwares such asOS, driver software, packet communication software and encryptionsoftware which have desired functions, and hardwares such ascommunication interface device, external memory device and input/outputdevice. Also, in this case, it is preferable to use the graphical userinterface (GUI) for the purpose of entering information from the user ora manager and presenting information to the user.

On the client 50 used by the user in order to utilize the service, a Webbrowser program or the like is operated according to the purpose. Theuser utilizes the service by sending a request message to a server thatprovides the desired service such as the information transfer or theorder taking through the Internet from the Web browser and receiving areply message, or repeating this procedure according to the need, forexample. Of course, it is also possible to use a software other than thegeneral purpose software like the Web browser, such as a dedicatedsoftware for the purpose of utilizing specific service. Also, the clientcan be a portable telephone terminal or the like that has the Internetfunction, for example, rather than the general purpose computer.

On the server 20, a prescribed server program is operated, to providethe service specific to that server site with respect to the user of theclient 50.

The server side proxy 30 can be provided to operate as a transparentproxy by being connected with both the LAN 12 inside the ASP servercenter 12 and the WAN 14 as shown in FIG. 1. The server side proxy 30can also be provided on the LAN. 12 inside the ASP server center 12 asshown in FIG. 2. The server side proxy 30 can also be realized as abuilt-in function of the server 20 as shown in FIG. 3.

Similarly, the client side proxy 40 can be provided to operate as atransparent proxy by being connected with both the LAN 16 inside theuser's office 4 and the WAN 14 as shown in FIG. 1. The client side proxy40 can also be provided on the LAN 16 inside the user's office 16 asshown in FIG. 2. The client side proxy 40 can also be realized as abuilt-in function of the browser or the like that operates on the client50 as shown in FIG. 3. The client side proxy 40 can also be realized asa personal client side proxy that is operated on the client 50 on whichthe browser or the like is operated.

Note that the server side proxy 30 and the client side proxy 40 can beprovided in the same form as shown in FIGS. 1 to 3, or in differentforms.

Each one of the server side proxy 30 and the client side proxy 40 ofthis embodiment has a caching mechanism called fingerprint cache (FPcache). The fingerprint cache records and manages data to be exchangedby the HTTP protocol, by using a name called fingerprint (FP).

As shown in FIG. 4, the fingerprint is a short numerical value that isdetermined by using a prescribed calculation method (a hash function inthe example of FIG. 4) from the content of the data (contents in theexample of FIG. 4) to be exchanged by the HTTP protocol. This numericalvalue may have a variable length, but the numerical value with a fixedlength is easier to handle from a viewpoint of the ease of theprocessing.

As a method for calculating the fingerprint, it is possible to use thewell known hash function such as MD-5, SHA-1, etc. These hash functionsare already in use for the electronic signature with respect to data,and they can convert arbitrary data given to them into a numerical valueof 128 bits in the case of MD-5 or a numerical value of 160 bits in thecase of SHA-1. The characteristic of these hash function is that, whentwo data X1 and X2 are given and the data X1 and the data X2 areidentical, the hash value calculated with respect to the data X1 and thehash value calculated with respect to the data X2 will be the same, butwhen two different data A and B are given, the hash value calculatedwith respect to the data A and the hash value calculated with respect tothe data B will be different at a very high probability (there is apossibility for the hash values calculated with respect to two differentdata A and B to be the same in principle, but that possibility isnegligibly small in practice).

As shown in FIG. 5, the fingerprint cache 60 to be provided in theserver side proxy 30 and the client side proxy 40 is recording andmanaging the data body 61 that were exchanged by using the HTTP protocolin the past, by using the fingerprint value 62 calculated from that databody 61 as its name.

For example, when the data (such as reply data) are to be transferredfrom the server side proxy 30 to the client side proxy 40 by using theHTTP protocol, the server side proxy 30 calculates the fingerprint ofthat data, and if the data corresponding to that fingerprint exists inthe fingerprint cache, it implies that (data with the same content as)this data had been transferred in the past, so that the server sideproxy 30 transfers the corresponding fingerprint value withouttransferring that data itself. The client side proxy 40 that receivedthe fingerprint can reproduce the data to be transferred by taking outthe data corresponding to that fingerprint value from the fingerprintcache. In this scheme (i.e., the sequence of data compression→datatransfer→data decompression), it is possible to reduce the amount ofdata to be transferred through the network considerably because itsuffices to send the fingerprint values for those data that are the sameas the data already sent in the past. Of course, the same is also truein the case of transferring the data from the client side proxy 40 tothe server side proxy 30.

Note that here it is assumed that the fingerprint cache is to beutilized at a time of transferring the data from the server side proxy30 to the client side proxy 40, and the timing for registering a set ofthe data and its corresponding fingerprint into the fingerprint cache isassumed to be that at which this data is transferred from the serverside proxy 30 to the client side proxy 40 for the first time (includingthe timing at which this data is transferred for the first time afterthis data was registered into the fingerprint cache once and thendeleted or invalidated later on, in the case of using a configuration inwhich the data that is once registered into the fingerprint cache can bedeleted or invalidated later on). Consequently, the data to betransmitted from the server to the client will be registered into thefingerprint cache when this data is transferred for the first time fromthe server side proxy 30 to the client side proxy 40, and when the dataof the same content is to be transferred subsequently, the amount oftransfer data will be reduced by utilizing the fingerprint cache.

Note however that there are cases where the data is to be first createdat the user's office or the like and registered into the server, andthen this data is to be frequently accessed from the browser or thelike, as in the case of the Web-based ASP, for example. In such cases,it is also possible to register the data into the fingerprint caches ofthe server side proxy 30 and the client side proxy 40 at a timing ofregistering this data at the server such that the subsequent accessescan be made faster.

For this reason, when the reply data to be transmitted by the server isthe data originally transferred from the client to the server(originally transferred as the request data), the registration timing isset to be the timing at which the original request data that becomes thereply data is transferred from the client side proxy 40 to the serverside proxy 30 for the first time. In this case, when that request databecomes the reply data and is to be transferred from the server sideproxy 30 to the client side proxy 40 for the first time, theregistration into the fingerprint cache has already been completed, sothat the amount of transfer data can be reduced by utilizing thefingerprint cache even when it is transferred as the reply data for thefirst time.

For the convenience of the explanation, the compression of the amount oftransfer data by replacing the data body of a message with thefingerprint by utilizing the fingerprint cache at a time of the datatransfer between the server side proxy 30 and the client side proxy 40will be referred to as a fingerprint compression (FP compression)hereafter.

Note that every message can be a target for applying the FP compression(i.e., a target for which the processing to replace the data with thefingerprint is to be carried out) between the server side proxy 30 andthe client side proxy 40, but it is also possible to set those messagesthat satisfy a prescribed condition as not targets for applying the FPcompression (which are always to be transferred without the FPcompression), in order to omit the application of the FP compressionwith respect to those messages for which the fingerprint cache effectcannot be expected, for example.

In this case, the prescribed condition can be that a prescribedinformation is described in the message header, for example. Morespecifically, the prescribed condition can be that an informationindicating the GET method and an information indicating the request aredescribed in the message header, for example. As another example, theprescribed condition can be that data to be transferred is null or in avery compact size. Of course there are many other variations for theprescribed condition, and it is also possible to use a plurality ofconditions in combination.

Next, with references to FIG. 6A to FIG. 10, the message format to beused between proxies (for a message that is a target for applying the FPcompression) at a time of the data transfer between the server sideproxy 30 and the client side proxy 40 will be described.

The message that is not a target for applying the FP compression can betransferred between proxies in an original message format (at a time ofreceiving it at the FP compression side (transmitting side) proxy)without making any change. It is also possible to transfer such amessage by providing an information capable of identifying that thismessage is not a target for applying the FP compression in the messageheader, for example, at the FP compression side (transmitting side)proxy.

Now, in the case of the data transfer between the server side proxy 30and the client side proxy 40, the messages that are targets for applyingthe FP compression include those messages (compressed messages) in whichdata is FP compressed and replaced with the fingerprint and thosemessages (non-compressed messages) in which data is loaded withoutapplying the FP compression.

The non-compressed message format is used when data contained in themessage is not registered in the fingerprint cache. On the other hand,the compressed message format is used when data contained in the messageis registered in the fingerprint cache.

At the decompression side (receiving side), the registration of datainto the fingerprint cache can be carried out at a timing of receivingthe message in the non-compressed format.

FIGS. 6A and 6B show exemplary message formats, where FIG. 6A shows thenon-compressed message and FIG. 6B shows the compressed message.

In FIG. 6A, the data is loaded on the message body, whereas in FIG. 6B,the fingerprint (FP) is loaded on the message body instead of the data.Also, in this example, an identification information for enablingidentification of the presence or absence of the FP compression isdescribed in a message header (at the compression side proxy), and thepresence or absence of the FP compression is identified according tothis identification information (at the decompression side proxy) (thecompression is absent if it is 0, the compression is present if it is 1,for example). Note that the identification information can be a specialone to be used between proxies or one that utilizes a field alreadyexisting in the ordinary HTTP message header, either independently or incombination with the original purpose of that field.

Note that, in the example of FIG. 6A, in the case of thenon-compression, the fingerprint is not included in the message but itis also possible to include the fingerprint in the message body inaddition to the data, or it is also possible to include the fingerprintin the message header as shown in FIG. 7. In this way, it is possible toomit a task to obtain the fingerprint from the data again at a time ofcarrying out the registration of the data into the fingerprint cache atthe decompression side, because the fingerprint included in the messagecan be utilized directly.

Note that, in the case where messages that are not targets for applyingthe FP compression can exist, it is also possible for the decompressionside (receiving side) to judge whether it is a message that is a targetfor applying the FP compression or a message that is not a target forapplying the FP compression according to whether the above describedidentification information is contained in the message header or not. Itis also possible to provide the identification information in the headerof the message that is not a target for applying the FP compression, soas to identify three types of the messages by this identificationinformation (a message that is not a target for applying the FPcompression if it is 01, (a message that is a target for applying the FPcompression and) the compression is absent if it is 10, and (a messagethat is a target for applying the FP compression and) the compression ispresent if it is 11, for example).

Here, a concrete example of a message in the format of FIG. 6A is shownin FIG. 32, and a concrete example of a message in the format of FIG. 6Bis shown in FIG. 33. In FIGS. 32 and 33, “Fingerprint-Mode: . . . ” inthe header corresponds to the identification information, and “6E39 . .. 0128” in the body of FIG. 33 corresponds to the fingerprint.

Also, a concrete example of a message in the format of FIG. 7 is shownin FIG. 34. In FIG. 34, “Fingerprint: . . . ” in the header correspondsto the fingerprint.

FIGS. 8A and 8B show another exemplary message formats, where FIG. 8Ashows the non-compressed message and FIG. 8B shows the compressedmessage.

In FIG. 8A, the data is loaded on the message body, whereas in FIG. 8B,the message body is null. Also, in this example, the fingerprint (FP) isdescribed in the message header in both formats. The identificationinformation for enabling identification of the presence or absence ofthe FP compression is the same as in the above described example.

Note that, in this case, it is also possible to use the message formatsimilar to that of FIG. 6A in the case of the non-compression (a formatthat does not contain the fingerprint).

Note that, in the case where messages that are not targets for applyingthe FP compression can exist and the compression side (transmittingside) proxy has a configuration for always describing the fingerprint inthe message header of the message that is a target for applying the FPcompression, it is also possible for the decompression side (receivingside) to judge whether it is a message that is a target for applying theFP compression or a message that is not a target for applying the FPcompression according to whether the fingerprint is contained in themessage header or not, besides the method based on the identificationinformation described above.

Here, a concrete example of a message in the format of FIG. 8A is shownin FIG. 35, and a concrete example of a message in the format of FIG. 8Bis shown in FIG. 36.

FIGS. 9A and 9B show still another exemplary message formats, where FIG.9A shows the non-compressed message and FIG. 9B shows the compressedmessage.

In FIG. 9A, the data is loaded on the message body, whereas in FIG. 9B,the message body is null. Also, in this example, the fingerprint (FP) isdescribed in the message header in both formats. However, in thisexample, the identification information for enabling identification ofthe presence or absence of the FP compression is not used.

In this example, the presence or absence of the FP compression can beidentified according to whether the message body is null or not.However, in the case where messages that are not targets for applyingthe FP compression and that have the null message body can exist, it ispossible to judge whether it is the compressed message that is a targetfor applying the FP compression or a message that is not a target forapplying the FP compression and that has the null message body accordingto whether the fingerprint is contained in the message header or not,for example. It is also possible to provide an information indicatingwhether it is a message that is a target for applying the FP compressionor not in the message header.

Note that it is also possible to use a format in which the fingerprintis not described in the message as shown in FIG. 10 in the case of thenon-compression. In this case, it is possible to identify the presenceor absence of the FP compression according to whether the fingerprint iscontained in the message header or not. However, in the case wheremessages that are not targets for applying the FP compression can exist,it is possible to provide an information indicating whether it is amessage that is a target for applying the FP compression or not in themessage header, for example.

Here, a concrete example of a message in the format of FIG. 9A is shownin FIG. 37, and a concrete example of a message in the format of FIG. 9Bis shown in FIG. 38.

Also, a concrete example of a message in the format of FIG. 10 is shownin FIG. 39.

In the following, the operation in the case of applying the FPcompression/decompression to the reply data at a time of transferringthe reply message from the server side proxy 30 to the client side proxy40 will be described in detail.

FIG. 11 shows an exemplary configuration of the server side proxy 30 inthis embodiment, and FIG. 12 shows an exemplary configuration of theclient side proxy 40 in this embodiment. Note that FIG. 11 and FIG. 12mainly show configurations relevant to the data transfer from the serverside proxy 30 to the client side proxy 40.

As shown in FIG. 11, the server side proxy 30 has a reception unit 31for carrying out a processing for receiving a transfer message from theLAN 12 inside the ASP server center 2 or the wide area network 14, aprocessing unit 32 for applying the FP compression to data contained inthe transfer message, a transmission unit 33 for carrying out aprocessing for transmitting the transfer message to the LAN 12 insidethe ASP server center 2 or the wide area network 14, and a fingerprintcache (FP cache) 34 for storing the fingerprint and its source data incorrespondence. Also, the processing unit 32 has a fingerprint (FP)compression judgement unit 321 for judging whether the data contained inthe transfer message should be a compression target or not, afingerprint cache (FP cache) management unit 322 for carrying out thesearch and the registration with respect to the fingerprint cache 34,and a fingerprint (FP) compression processing unit 323 for carrying outa processing for replacing the data contained in the transfer messagewith the corresponding fingerprint.

As shown in FIG. 12, the client side proxy 40 has a reception unit 41for carrying out a processing for receiving a transfer message from theLAN 16 inside the user's office 4 or the wide area network 14, aprocessing unit 42 for applying the FP decompression to data containedin the transfer message, a transmission unit 43 for carrying out aprocessing for transmitting the transfer message to the LAN 16 insidethe user's office 4 or the wide area network 14, and a fingerprint cache(FP cache) 44 for storing the fingerprint and its source data incorrespondence. Also, the processing unit 42 has a fingerprint (FP)compression judgement unit 421 for judging whether the data contained inthe transfer message should be a compression target or not and thepresence or absence of the FP compression with respect to the transfermessage, a fingerprint cache (FP cache) management unit 422 for carryingout the search and the registration with respect to the fingerprintcache 44, and a fingerprint (FP) decompression processing unit 423 forcarrying out a processing for decompressing the original data from thefingerprint contained in the FP compressed transfer message.

Note that the FP compression judgement unit 321 on the compression sideand the FP compression judgement unit 421 on the decompression sidejudge whether the data contained in that message should be a target forapplying the FP compression or not, by checking whether the messagesatisfies a prescribed condition or not as described above. In the caseof setting every message as a target for applying the FP compression,the FP compression judgement unit 321 on the compression side and thecorresponding part of the exemplary procedure to be described below areunnecessary, and the FP compression judgement unit 421 on thedecompression side and the corresponding part of the exemplary procedureto be described below are also unnecessary. Note also that the FPcompression judgement unit 421 on the decompression side judges whetherthe data of the message that is a target for applying the FP compressionis FP compressed or not.

In the following, the case of transferring the message that is a targetfor applying the FP compression (the case in which the message is judgedas a target for applying the FP compression or the case in which everymessage is set as a target for applying the FP compression) will bemainly described.

In the following, the operation in the case where the reply datatransmitted by the server is transferred from the server side proxy 30to the client side proxy 40 will be described first, and the operationin the case where the request data that is a source of the reply data tobe transmitted by the server is transferred from the client side proxy40 to the server side proxy 30 will be described next.

FIG. 13 shows an exemplary processing procedure of the server side proxy30 at a time of transferring the reply message from the server sideproxy 30 to the client side proxy 40. Note that FIG. 13 shows theprocessing in the case of receiving one reply message, but in practicethe server side proxy 30 carries out the processing shown in FIG. 13with respect to every received reply message.

The server side proxy 30 receives the reply message from the server 20at the reception unit 31 (step S1).

The FP compression judgement unit 321 checks and judges whether thereply data of this reply message is a target for applying the FPcompression or not (step S2). When the reply data is judged as not atarget for applying the FP compression (step S2 NO), the received replymessage is transferred to the client side proxy 40 from the transmissionunit 33 (step S9).

When the reply data of this reply message is judged as a target forapplying the FP compression at the step S2, the fingerprint value ofthis reply data is calculated at the FP cache management unit 322 (stepS3), and the fingerprint cache 34 is searched through by using thisfingerprint value as a key (step S4).

When a set of this fingerprint value and the corresponding data isregistered in the fingerprint cache 34 (step S5 YES), the received replymessage is converted into the FP compression format (of FIG. 8B, forexample) by using this fingerprint value at the FP compressionprocessing unit 323, and transmitted to the client side proxy 40 fromthe transmission unit 33 (step S6). At this point, a value of a fieldindicating the data length (Content-Length field) in the reply header isset in accordance with the FP compression format, according to the need.

On the other hand, when a set of this fingerprint value and thecorresponding data is not registered in the fingerprint cache 34 as aresult of the search of the step S4 (step S5 NO), the following twooperations are carried out.

(1) The received reply message is converted into a non-FP compressionformat (of FIG. 8A, for example) (by using this fingerprint valueaccording to the need) at the FP compression processing unit 323, andtransmitted to the client side proxy 40 from the transmission unit 33(step S7).

(2) This fingerprint value and this reply data are set in correspondence(the fingerprint value is set as a key) and registered into thefingerprint cache 34 at the FP cache management unit 322 (step S8).

Note that these operations (1) and (2) can be carried out in any desiredorder or in parallel.

Next, FIG. 14 shows an exemplary processing procedure of the client sideproxy 40 at a time of transferring the reply message from the serverside proxy 30 to the client side proxy 40. Note that FIG. 14 shows theprocessing in the case of receiving one reply message, but in practicethe client side proxy 40 carries out the processing shown in FIG. 14with respect to every received reply message.

The client side proxy 40 receives the reply message from the server sideproxy 30 at the reception unit 41 (step S11).

The FP compression judgement unit 421 checks and judges whether thereply data of this reply message is a target for applying the FPcompression or not (step S12). When the reply data is judged as not atarget for applying the FP compression (step S12 NO), the received replymessage is transferred to the client 50 from the transmission unit 43(step S20).

When the reply data of this reply message is judged as a target forapplying the FP compression at the step S12, the FP compressionjudgement unit 421 also checks and judges whether the reply data is FPcompressed or not (step S13).

When the reply data of this reply message is judged as FP compressed (asshown in FIG. 8B, for example) at the step S13, the fingerprint value ofthis reply data is obtained at the FP cache management unit 422 (stepS14), and the fingerprint cache 44 is searched through by using thisfingerprint value as a key (step S15).

Then, the data corresponding to this fingerprint value obtained from thefingerprint cache 44 is attached to the received reply message and aspecial information to be used between the proxies is deleted in thecase of using such an information at the FP decompression processingunit 423, and the resulting reply message is transmitted to the client50 from the transmission unit 43 (step S16). At this point, a value of afield indicating the data length (Content-Length field) in the replyheader is set to be a length of the data corresponding to thisfingerprint value, according to the need.

On the other hand, when the reply data of this reply message is judgedas not FP compressed (as shown in FIG. 8A, for example) at the step S13,the following two operations are carried out.

(1) The special information to be used between the proxies is deletedfrom the received reply message in the case of using such an informationat the FP decompression processing unit 423, and the resulting replymessage is transmitted to the client 50 from the transmission unit 43(step S18).

(2) The fingerprint value of this reply data is obtained (step S17), andthis fingerprint value and this reply data are set in correspondence(the fingerprint value is set as a key) and registered into thefingerprint cache 44 at the FP cache management unit 422 (step S19).

Note that these operations (1) and (2) can be carried out in any desiredorder or in parallel.

Here, the fingerprint value can be obtained at the step S14 from thefingerprint that is described in the message. However, the step S17 canuse a method for obtaining the fingerprint from the message when thefingerprint is described in the message or a method for calculating thefingerprint value by using the hash function or the like from the replydata when the fingerprint is not described in the message. It is alsopossible to use a method for calculating the fingerprint value from thereply data even when the fingerprint is described in the message.

Note also that it is possible to carry out the step S14 or the step S17between the step S12 and the step S13, and it is also possible to carryout the step S17 between the step S18 and the step S19. Note also thatthe judgement of the step S12 and the judgement of the step S13 can bemade simultaneously.

Note also that, in the case of not using the fingerprint cache at a timeof transferring the request message from the client side proxy 40 to theserver side proxy 30, the server side proxy 30 can carry out a procedureshown in FIG. 15 in which the server side proxy 30 receives the requestmessage from the client side proxy 40 (step S21), and transmits it tothe server 20 (step S22). Similarly, the client side proxy 40 can carryout a procedure shown in FIG. 16 in which the client side proxy 40receives the request message from the client 50 (step S23) and transmitsit to the server side proxy 30 (step S24).

In the following, the data transfer utilizing the fingerprint cache willbe described in further detail with references to FIG. 17 (for a time ofthe registration, i.e., a time of the non-FP compression) and FIG. 18(for a time of the FP compression).

First, with reference to FIG. 17, the operation in the case oftransferring data that is not registered in the fingerprint cache fromthe server side proxy 30 to the client side proxy 40 while registeringthis data into the fingerprint cache will be described.

(1) Suppose that the browser or the like on the client 50 issued therequest message of the POST method to the server 20 by using the URL of“/A.cgi”, for example. Here, the browser or the like is set in advanceto send the request message for the server 20 to the client side proxy40 first.

(2) The client side proxy 40 that received the request message from theclient 50 transfers this request message to the server side proxy 30.

(3) The server side proxy 30 that received the request message transfersthis request message to the server 20.

(4) The server 20 carries out a processing with respect to this requestmessage, and then returns the reply message to the server side proxy 30.

(5) The server side proxy 30 that received the reply message calculatesthe fingerprint of the reply data contained in the received replymessage first, and checks whether the data having this fingerprint nameexists in the fingerprint cache 34 or not. If it does not exist, it isthe first time data (including the case where it is the first time dataafter this data was registered into the fingerprint cache once and thendeleted or invalidated later on, in the case of using a configuration inwhich the data that is once registered into the fingerprint cache can bedeleted or invalidated later on), so that this data is entered(registered) into the fingerprint cache 34 by using the fingerprint asits name.

(6) The server side proxy 30 transfers the reply message to the clientside proxy 40.

Note that, as described above, when the reply message that contains thefingerprint value calculated from the reply data in the reply header orthe like is sent, it is possible to omit a task for calculating thefingerprint again at the client side proxy 40.

(7) The client side proxy 40 that received the reply message registersthe reply data into the fingerprint cache 44 because it is the firsttime data.

Note that, as described above, either the fingerprint is calculated fromthe reply data or the fingerprint that is entered into the reply headeror the like by the server side proxy 30 is taken out and thisfingerprint is registered as a name.

(8) The client side proxy 40 returns the reply message to (the browseror the like operating on) the client 50 (after deleting an informationto be used only between the server side proxy 30 and the client sideproxy 40 such as the fingerprint value in the case of a configuration inwhich such an information exists in the reply header or the like).

Note that the fingerprint cache registration of the above described (5)at the server side proxy 30 can be carried out after the operation ofthe above described (6). Also, the fingerprint cache registration of theabove described (7) at the client side proxy 40 can be carried out afterthe operation of the above described (8).

Next, with reference to FIG. 18, the operation in the case oftransferring data that is registered in the fingerprint cache by theoperation of FIG. 17 from the server side proxy 30 to the client sideproxy 40 will be described. (1) to (4) are the same as (1) to (4) in theoperation of FIG. 17.

(5) The server side proxy 30 that received the reply message from theserver 20 calculates the fingerprint of the reply data contained in thereceived reply message first, and checks whether the data having thisfingerprint name exists in the fingerprint cache 34 or not. If itexists, it is the data that had been sent in the past (the dataregistered in the fingerprint cache), so that the reply data is replacedwith the fingerprint (by entering the fingerprint value into the replyheader and making the reply body null as described above, for example).

(6) The server side proxy 30 transfers the reply message in which thereply data is replaced with the fingerprint to the client side proxy 40.

(7) The client side proxy 40 that received the reply message detectsthat the reply data is replaced with the fingerprint, takes out thecorresponding data from the fingerprint cache 44 by using thefingerprint (specified by the reply header or the like as describedabove, for example), and enters this data into the reply body.

(8) The client side proxy 40 returns the reply message to (the browseror the like operating on) the client 50 (after deleting an informationto be used only between the server side proxy 30 and the client sideproxy 40 such as the fingerprint value in the case of a configuration inwhich such an information exists in the reply header or the like).

Note that each one of the fingerprint caches of the server side proxy 30and the client side proxy 40 has an upper limit for its capacity so thatit is preferable to sequentially delete old data or data that are lesslikely to be used, for example, by carrying out the garbage collectionaccording to a prescribed algorithm.

However, in this case, there can be data which is still existing in thefingerprint cache 34 of the server side proxy 30 but which is alreadydeleted in the fingerprint cache 44 of the client side proxy 40, so thatthere can be cases where an attempt to take out the reply data from thefingerprint cache 44 by using the fingerprint is made at the client sideproxy 40 at the above described (7) but the corresponding set of thefingerprint and the data no longer exists in the fingerprint cache 44.In such cases, it is possible to provide a mechanism in which the clientside proxy 40 requests the server side proxy 30 to send the datacorresponding to the specified fingerprint, and the requested serverside proxy 30 takes out the data corresponding to the specifiedfingerprint from the fingerprint cache 34 and returns this data, forexample.

On the contrary, when there exists data which is already deleted fromthe fingerprint cache 34 of the server side proxy 30 but which is stillexisting in the fingerprint cache 44 of the client side proxy 44, thefingerprint and the reply data that are registered at that timing can beoverwritten at a time of registering the fingerprint and the reply datainto the fingerprint cache 44 at the client side proxy 40 by the abovedescribed (7) in the operation of FIG. 17.

In the above described (5) in the operation of FIG. 18, the processingassumes that when the fingerprint of the reply data is obtained and thisfingerprint exists in the fingerprint cache 34 at the server side proxy30, the same data as this reply data exists in correspondence with thisfingerprint in the fingerprint cache 34. This method is sufficient if itis assumed that the same fingerprint will not be generated fromdifferent data in practice, but there is also a method for eliminatingan error that can be caused when the same fingerprint is generated fromdifferent data which occurs at a very small probability.

In this case, when the fingerprint obtained from the reply data existsin the fingerprint cache 34, the data existing in the fingerprint cache34 in correspondence with this fingerprint is compared with that replydata to judge whether they are the same or not. At this point, theprocessing in the case where it is judged that the fingerprint is thesame but data with different contents are registered can be any of thefollowing.

-   -   This fingerprint will not be used thereafter (in which case the        data that gives this fingerprint will not be cached thereafter).    -   The fingerprint and the data that are registered earlier will be        given the priority (in which case the other data that gives the        same fingerprint as the registered fingerprint will not be        cached while this fingerprint is registered).    -   The fingerprint and the data to be currently registered will be        given the priority (in which case the registered data will be        sequentially updated by the other data that gives the same        fingerprint).

Note that it is also possible to provide a correspondence table.(URL-FPtable) for the URL and the fingerprint to be described below in theserver side proxy 30 or the client side proxy 40 of this embodiment, anduse it in combination with the fingerprint cache to realize theoperation of the shared cache for the proxy server as well. Whether ornot to provide this function can be determined for each individualserver side proxy 30 or each individual client side proxy 40 separately.

First, the client side proxy 40 provided with the above describedfunction will be described.

FIG. 19 shows an exemplary configuration of the client side proxy 40 inthis case. This client side proxy 40 has a URL-FP table 45 for storing acorrespondence between a URL that was accessed in the past and thefingerprint of its reply data, and a URL cache processing unit 424, inaddition to the configuration of FIG. 12.

Note that, in addition to the URL and the fingerprint, the URL-FP table45 also records information on a MIME type contained in the reply headerwhen the access was made by using that URL, a timestamp to be used injudging the valid period, etc. The URL-FP table 45 also recordsinformation that is necessary only in the case where the conventionalshared cache is cachable.

FIG. 20 shows an exemplary processing procedure of the client side proxy40 at a time of transferring the reply message from the server sideproxy 30 to the client side proxy 40.

Note that the processing procedure in this case is similar to that ofFIG. 14 except that the steps S27 and S28 are added after the steps S16and S19 of FIG. 14, and FIG. 20 only shows this part of the processingprocedure which is to be added after the steps S16 and S19 of FIG. 14.Here, this part of the processing procedure to be added to that of FIG.14 will be mainly described.

After transmitting the reply message to the client 50 from thetransmission unit 43 (step S16 or S18), the client side proxy 40 checksand judges whether this reply message is the caching target or not atthe URL cache processing unit 424 (step S27). When it is judged as thecaching target, the URL, the fingerprint, and the information necessaryfor forming the reply header are set in correspondence (the URL is setas a key) and registered into the URL-FP table 45 at the URL cacheprocessing unit 424 (step S28). When it is judged as not a cachingtarget, no further operation will be carried out.

Note that the judgement of the step S27 and the registration into theURL-FP table at the step S28 can be carried out between the step S13 andthe step S16 or S19.

Note also that the method for judging whether the received reply messageis the caching target or not at a time of the registration can besimilar to that used at a time of the registration conventionally. Forexample, the caching target can be set to be those reply messages of theGET method for which an information indicating the caching prohibitionis not described in their headers.

Next, FIG. 21 shows an exemplary processing procedure regarding theoperation of the shared cache of the proxy server at the client sideproxy 40 when the request message received from the client 50 is to betransferred from the client side proxy 40 to the server side proxy 30.

The client side proxy 40 receives the request message from the client 50at the reception unit 41 (step S31).

The URL cache processing unit 424 checks and judges whether the replymessage corresponding to the request message is the caching target ornot (step S32). Note that the method for judging whether the replymessage is the caching target or not at a time of the reply can besimilar to that used at a time of the reply conventionally. For example,the caching target can be set to be the reply messages corresponding tothe received request messages of the GET method.

When the reply message corresponding to the request message is judged asnot the caching target (step S32 NO), the received request message istransferred to the server side proxy 30 from the transmission unit 43(step S38).

When the reply message corresponding to the request message is judged asthe caching target (step S32 YES), the URL cache processing unit 424also takes out the URL specified in that request message (step S33) andsearches through the URL-FP table 45 by using that URL as a key (stepS34).

When the fingerprint of the reply data corresponding to that URL is notregistered (step S35 NO), the received request message is transferred tothe server side proxy 30 from the transmission unit 43 (step S38).

Also, when the fingerprint of the reply data corresponding to that URLis registered (step S35 YES) but it is judged that this data is invalidaccording to the information for judging the valid period that isrecorded in correspondence (step S36 NO), the received request messageis transferred to the server side proxy 30 from the transmission unit 43(step S38). At this point, it is also possible to carry out theoperation such that the request message is transferred to the serverside proxy 30 by entering the timestamp of the currently recorded datainto the If-Modified-Since header of the request message, and theoperation proceeds to the step S37 upon receiving the reply messageindicating that the currently recorded data is valid from the serverside proxy 30.

On the other hand, when the fingerprint of the reply data correspondingto that URL is registered (step S35 YES) and it is judged that this datais valid according to the information for judging the valid period thatis recorded in correspondence (step S36 YES), the URL cache processingunit 424 obtains the information necessary for forming the reply datafrom the URL-FP table 45, acquires the reply data by searching throughthe fingerprint cache 44 by using the fingerprint of the reply datacorresponding to that URL as a key, generates the reply message fromthem, and transfers the reply message to the client 50 from thetransmission unit 43 (step S37).

In the following, the operation of the shared cache will be described infurther detail with reference to FIG. 22 (for a time of the reply).

(1) Suppose that the browser or the like on the client 50 issued therequest message of the GET method to the server 20 by using the URL of“/C.html”, for example.

(2) When the request with a new URL is received, if that URL isregistered in the URL-FP table 45, the judgement of the valid period iscarried out similarly as the conventional shared cache, and if it isjudged as valid, the fingerprint corresponding to that URL is obtainedfrom the URL-FP table 45, the data having that fingerprint as a name istaken out from the fingerprint cache 44 as the reply data, and the replyheader is formed by taking out the information necessary for forming thereply header such as the MIME type from the URL-FP table 45.

(3) The produced reply message is returned to (the browser or the likeoperating on) the client 50.

Note that it is also possible to carry out the operation such that, evenin the case of the request message having the If-Modified-Since headerwhich requests sending of the data only when the cache content isupdated since the specified time, the URL-FP table 45 is looked upfirst, and if it is judged as not updated the reply message is producedand returned, or otherwise an inquiry to the server is made by rewritingthe information of the If-Modified-Since header.

Next, the server side proxy 30 provided with the caching function willbe described.

The caching function of the client side proxy 40 is described above, andthe caching function of the server side proxy 30 can be realizedsimilarly.

In this case, the roles of the client 50 which is the message transfersource and the server side proxy 30 which is the message transferdestination in the case of the client side proxy 40 are played by theclient side proxy 40 (transfer source) and the server 20 (transferdestination) in the case of the server side proxy 30 respectively, andthe configuration and the procedure regarding the caching are the same.

FIG. 23 shows an exemplary configuration of the server side proxy 30 inthis case. This server side proxy 30 has a URL-FP table 35 for storing acorrespondence between a URL that was accessed in the past and thefingerprint of its reply data, and a URL cache processing unit 324, inaddition to the configuration of FIG. 11.

FIG. 24 shows an exemplary processing procedure of the server side proxy30 at a time of transferring the reply message from the server sideproxy 30 to the client side proxy 40.

Note that the processing procedure in this case is similar to that ofFIG. 13 except that the steps S39-2 and S39-3 are added after the stepsS6 and S8 of FIG. 13, and FIG. 24 only shows this part of the processingprocedure which is to be added after the steps S6 and S8 of FIG. 13.Here, this part of the processing procedure to be added to that of FIG.13 will be mainly described.

After transmitting the reply message to the client side proxy 40 fromthe transmission unit 33 (step S6 or S8), the server side proxy 30checks and judges whether the reply data of this reply message is thecaching target or not at the URL cache processing unit 324 (step S39-2).When it is judged as the caching target, the URL, the fingerprint, andthe information necessary for forming the reply header are set incorrespondence (the URL is set as a key) and registered into the URL-FPtable 35 at the URL cache processing unit 324 (step S39-3). When it isjudged as not a caching target, no further operation will be carriedout.

Of course, this procedure can be modified in various ways similarly asthat for the client side proxy 40 described above.

Next, FIG. 25 shows an exemplary processing procedure regarding theoperation of the shared cache of the proxy server at the server sideproxy 30 when the request message received from the client side proxy 40is to be transferred from the server side proxy 30 to the server 20.

The processing procedure in this case is basically the same as theprocedure of FIG. 21. Note that the step S37 of FIG. 21 produces thereply data and transfers this reply data to the client 50, whereas thestep S47 of FIG. 25 corresponding to this operation produces the replydata in the FP compression format (of FIG. 8B, for example) andtransfers this reply data to the client side proxy 40.

Such a configuration for carrying out the cache processing by providingthe URL-FP table at the server side proxy as well is effective when oneserver side proxy is used from a plurality of client side proxies.Namely, when the cachable data that is requested from one client sideproxy is already accessed by another client side proxy, it is cached atthe server side proxy as well so that the processing can be completed bysimply returning the cached data.

Note that the above description is directed to the case of providing theURL-FP table separately from the fingerprint cache, but it is alsopossible to form the URL-FP table and the fingerprint cache integrally.

Next, the operation in the case where the request data that is a sourceof the reply data to be transmitted by the server is transferred fromthe client side proxy 40 to the server side proxy 30 will be described.

FIG. 40 shows an exemplary processing procedure of the client side proxy40 at a time of receiving the request message from the client 50.

The procedure of FIG. 40 is similar to that of the server side proxy 30shown in FIG. 13 as far as the fingerprint is concerned, but here it isassumed that the FP compression is not applied to the data transfer fromthe client side proxy 40 to the server side proxy 30, so that thisprocedure is different in that the request message is transferred byloading the request data even when the data with the same content asthis request data is already registered in the fingerprint cache 44.

The client side proxy 40 receives the request message from the client 50at the reception unit 41 (step S135-1).

The FP compression judgement unit 421 checks and judges whether therequest data of the request message is a target for applying the FPcompression or not (step S135-2). When the request data is judged as nota target for applying the FP compression (step S135-2 NO), the receivedrequest message is transferred to the server side proxy 30 from thetransmission unit 43 (step S135-9).

When the request data of the request message is judged as a target forapplying the FP compression at the step S135-2, the request data isacquired from this request message and maintained (step S135-3), andthis request message is transferred to the server side proxy 30 from thetransmission unit 43 (step S135-4).

Then, the fingerprint value of this request data is calculated at the FPcache management unit 422 (step S135-5), and the fingerprint cache 44 issearched through by using this fingerprint value as a key (step S135-6).

When a set of this fingerprint value and the corresponding data is notregistered in the fingerprint cache 44 (step S135-7 NO), thisfingerprint value and this request data are set in correspondence (thefingerprint value is set as a key) and registered into the fingerprintcache 44 at the FP cache management unit 422 (step S135-8).

On the other hand, when a set of this fingerprint value and thecorresponding data is registered in the fingerprint cache 44 as a resultof the search of the step S135-6 (step S135-7 YES), no further operationis carried out.

Note that the transmission of the step S135-4 can be carried out at atiming of the step S135-5 or any arbitrary timing after that. Also, thecalculation of the fingerprint at the step S135-5 can be carried out ata timing of the step S135-4 or any arbitrary timing before that.

Next, FIG. 41 and FIG. 42 show another exemplary processing procedure ofthe client side proxy 40, which differs from the procedure of FIG. 40 inthat, in the procedure of FIG. 40, the registration into the fingerprintcache is carried out at a timing of receiving the request message fromthe client 50, whereas in the procedure of FIG. 41 and FIG. 42, theregistration into the fingerprint cache is carried out after receivingfrom the server side proxy 30 the reply message transmitted by theserver 20 in response to the request message.

FIG. 41 shows a procedure at a time of receiving the request messagefrom the client 50, and FIG. 42 shows a procedure at a time of receivingthe reply message from the server side proxy 30. Note that the procedureof FIG. 42 is to be carried out along with the procedure of FIG. 14.

The client side proxy 40 receives the request message from the client 50at the reception unit 41 (step S131-1).

The FP compression judgement unit 421 checks and judges whether therequest data of the request message is a target for applying the FPcompression or not (step S131-2). When the request data is judged as nota target for applying the FP compression (step S131-2 NO), the receivedrequest message is transferred to the server side proxy 30 from thetransmission unit 43 (step S131-4).

When the request data of the request message is judged as a target forapplying the FP compression at the step S131-2, the request data isacquired from this request message and maintained (step S131-3), andthis request message is transferred to the server side proxy 30 from thetransmission unit 43 (step S131-4).

On the other hand, the client side proxy 40 receives the reply messagefrom the server side proxy 30 at the reception unit 41 (step S133-1).

Here, if the request data of the request message corresponding to thereceived reply message is not maintained (step S133-2 NO), no furtheroperation regarding the request message registration processing iscarried out.

If the request data of the request message corresponding to the receivedreply message is maintained (step S133-2. YES), the fingerprint value ofthis request data is calculated at the FP cache management unit 422(step S133-3), and the fingerprint cache 44 is searched through by usingthis fingerprint value as a key (step S133-4).

When a set of this fingerprint value and the corresponding data is notregistered in the fingerprint cache 44 (step S133-5 NO), thisfingerprint value and this request data are set in correspondence (thefingerprint value is set as a key) and registered into the fingerprintcache 44 at the FP cache management unit 422 (step S133-6).

On the other hand, when a set of this fingerprint value and thecorresponding data is registered in the fingerprint cache 44 as a resultof the search of the step S133-4 (step S133-5 YES), no further operationis carried out.

FIG. 43 shows an exemplary processing procedure of the server side proxy30 at a time of receiving the request message from the client side proxy40. The procedure of FIG. 43 is similar to that of the client side proxy40 of FIG. 40.

The server side proxy 30 receives the request message from the clientside proxy 40 at the reception unit 31 (step S145-1).

The FP compression judgement unit 321 checks and judges whether therequest data of the request message is a target for applying the FPcompression or not (step S145-2). When the request data is judged as nota target for applying the FP compression (step S145-2 NO), the receivedrequest message is transferred to the server 20 from the transmissionunit 33 (step S145-9).

When the request data of the request message is judged as a target forapplying the FP compression at the step S145-2, the request data isacquired from this request message and maintained (step S145-3), andthis request message is transferred to the server 20 from thetransmission unit 33 (step S145-4).

Then, the fingerprint value of this request data is calculated at the FPcache management unit 322 (step S145-5), and the fingerprint cache 34 issearched through by using this fingerprint value as a key (step S145-6).

When a set of this fingerprint value and the corresponding data is notregistered in the fingerprint cache 34 (step S145-7 NO), thisfingerprint value and this request data are set in correspondence (thefingerprint value is set as a key) and registered into the fingerprintcache 34 at the FP cache management unit 322 (step S145-8).

On the other hand, when a set of this fingerprint value and thecorresponding data is registered in the fingerprint cache 34 as a resultof the search of the step S145-6 (step S145-7 YES), no further operationis carried out.

Note that the transmission of the step S145-4 can be carried out at atiming of the step S145-5 or any arbitrary timing after that. Also, thecalculation of the fingerprint at the step S145-5 can be carried out ata timing of the step S145-4 or any arbitrary timing before that.

Next, FIG. 44 and FIG. 45 show another exemplary processing procedure ofthe server side proxy 30. The procedure of FIG. 44 and FIG. 45 issimilar to that of the client side proxy 40 of FIG. 41 and FIG. 42, inthat the registration into the fingerprint cache is carried out afterreceiving the reply message from the server 20.

FIG. 44 shows a procedure at a time of receiving the request messagefrom the client side proxy 40, and FIG. 45 shows a procedure at a timeof receiving the reply message from the server 20. Note that theprocedure of FIG. 45 is to be carried out along with the procedure ofFIG. 13.

The server side proxy 30 receives the request message from the clientside proxy 40 at the reception unit 31 (step S141-1).

The FP compression judgement unit 321 checks and judges whether therequest data of the request message is a target for applying the FPcompression or not (step S141-2). When the request data is judged as nota target for applying the FP compression (step S141-2 NO), the receivedrequest message is transferred to the server 20 from the transmissionunit 33 (step S141-4).

When the request data of the request message is judged as a target forapplying the FP compression at the step S141-2, the request data isacquired from this request message and maintained (step S141-3), andthis request message is transferred to the server 20 from thetransmission unit 33 (step S141-4).

On the other hand, the server side proxy 30 receives the reply messagefrom the server 20 at the reception unit 31 (step S143-1).

Here, if the request data of the request message corresponding to thereceived reply message is not maintained (step S143-2 NO), no furtheroperation regarding the request message registration processing iscarried out.

If the request data of the request message corresponding to the receivedreply message is maintained (step S143-2 YES), the fingerprint value ofthis request data is calculated at the FP cache management unit 322(step S143-3), and the fingerprint cache 34 is searched through by usingthis fingerprint value as a key (step. S143-4).

When a set of this fingerprint value and the corresponding data is notregistered in the fingerprint cache 34 (step S143-5 NO), thisfingerprint value and this request data are set in correspondence (thefingerprint value is set as a key) and registered into the fingerprintcache 34 at the FP cache management unit 322 (step S143-6).

On the other hand, when a set of this fingerprint value and thecorresponding data is registered in the fingerprint cache 34 as a resultof the search of the step S143-4 (step S133-5 YES), no further operationis carried out.

Note that, in the series of processings, it is possible for the clientside proxy 40 and the server side proxy 30 to calculate the fingerprintof the target data independently. It is also possible for the serverside proxy 30 to calculate the fingerprint and notify the calculatedfingerprint to the client side proxy 40 such that the client side proxy40 uses the notified fingerprint. It is also possible for the clientside proxy 40 to calculate the fingerprint and notify the calculatedfingerprint to the server side proxy 30 such that the server side proxy30 uses the notified fingerprint.

In the following, with reference to FIG. 46, the operation in the caseof carrying out the registration into the fingerprint cache when therequest data that is a source of the reply data to be transmitted by theserver is transferred from the client side proxy 40 to the server sideproxy 30 will be described in further detail.

Note that FIG. 46 shows a concrete example regarding the procedure ofthe client side proxy 40 of FIG. 41 and FIG. 42 and the procedure of theserver side proxy 30 of FIG. 44 and FIG. 45.

(1) Suppose that the browser or the like on the client 50 issued therequest message of the PUT method to the server 20 by using the URL of“/D.doc”, for example. Here, the data desired to be sent to the server20 (which is assumed to be “document D” in the example of FIG. 46) isloaded in the request body. Also, the browser or the like is set inadvance to send the request message for the server 20 to the client sideproxy 40 first.

(2) The client side proxy 40 that received the request message from theclient 50 transfers this request message to the server side proxy 30. Atthis point, this request data is maintained.

(3) The server side proxy 30 that received the request message transfersthis request message to the server 20. At this point, this request datais maintained.

(4) The server 20 carries out a processing with respect to this requestmessage, and then returns the reply message to the server side proxy 30.

(5) The server side proxy 30 that received the reply message calculatesthe fingerprint of the request data of the request message correspondingto the received reply message, and checks whether the data having thisfingerprint name exists in the fingerprint cache 34 or not. If it doesnot exist, it is the first time data so that this data is registeredinto the fingerprint cache 34 by using the fingerprint as its name.

(6) The server side proxy 30 transfers the reply message to the clientside proxy 40.

Note that, as described above, when the reply message that contains thefingerprint value calculated from the request data in the reply headeror the like is sent, it is possible to omit a task for calculating thefingerprint again at the client side proxy 40.

(7) The client side proxy 40 that received the reply message registersthe request data into the fingerprint cache 44.

Note that, as described above, either the fingerprint is calculated fromthe request data or the fingerprint that is entered into the replyheader or the like by the server side proxy 30 is taken out and thisfingerprint is registered as a name.

(8) The client side proxy 40 returns the reply message to (the browseror the like operating on) the client 50 (after deleting an informationto be used only between the server side proxy 30 and the client sideproxy 40 such as the fingerprint value in the case of a configuration inwhich such an information exists in the reply header or the like).

Note that, in the above described operation, the fingerprint cacheregistration of the above described (5) can be carried out at arbitrarytiming after the above described (2) for receiving the request data.Also, the fingerprint cache registration of the above described (7) canbe carried out after or in parallel to the operation of the abovedescribed (8) for returning the reply data.

The request data registered in the fingerprint cache in this way can beused for the replacement of the subsequent reply data so as to reducethe network traffic.

Now, in the examples described so far, at a time of transferring thereply data from the server side proxy 30 to the client side proxy 40, ifthis reply data is the same as that registered in the fingerprint cache,the network traffic is reduced by transferring the correspondingfingerprint instead of this reply data. This FP compression can beapplied also to the case of transferring the request data from theclient side proxy 40 to the server side proxy 30 as well. Note that itis also possible to apply the FP compression only to the case oftransferring the request data from the client side proxy 40 to theserver side proxy 30.

Also, in any of the case for applying the FP compression only to therequest data transfer, the case for applying the FP compression only tothe reply data transfer, and the case for applying the FP compression toboth the request data transfer and the reply data transfer, aconfiguration regarding the shared cache for the reply datacorresponding to the URL specified by the request message can beprovided in the client side proxy 40 alone or the server side proxy 30alone, or in both proxies.

In the case of applying the FP compression to the request data transferfrom the client side proxy 40 to the server side proxy 30, the roles ofthe server side proxy 30 and the client side proxy 40 with respect tothe reply data described above should be interchanged, so that in thecase of applying the FP compression to both the request data transferand the reply data transfer, the server side proxy 30 should have afingerprint decompression processing unit in the processing unit 32 inaddition to the configuration of FIG. 11, and the client side proxy-40should have a fingerprint compression processing unit in the processingunit 42 in addition to the configuration of FIG. 12.

Note that, in either proxy, the fingerprint compression processing unitand the fingerprint decompression processing unit can be combined into afingerprint compression/decompression processing unit.

Also, in the server side proxy 30 and/or the client side proxy 40, it ispossible to provide the fingerprint cache for the request data transferindependently from the fingerprint cache for the reply data transfer,and it is also possible to share the same fingerprint cache among thereply data transfer and the request data transfer.

FIG. 26 shows an exemplary configuration of the proxy (which can beeither one of the server side proxy and the client side proxy) in thiscase.

Also, FIG. 27 shows an exemplary processing procedure of the client sideproxy 40 at a time of transferring the request message from the clientside proxy 40 to the server side proxy 30. Note that, in this case, theprocedure of FIG. 40 or the procedure of FIGS. 41 and 42 described aboveare unnecessary.

The client side proxy 40 receives the request data from the client 50 atthe reception unit 41 (step S51).

The FP compression judgement unit 421 checks and judges whether therequest data of the request message is a target for applying the FPcompression or not (step S52). When the request data is judged as not atarget for applying the FP compression (step S52 NO), the receivedrequest message is transferred to the server side proxy 30 from thetransmission unit 43 (step S59).

When the request data of the request message is judged as a target forapplying the FP compression at the step S52, the fingerprint value ofthis request data is calculated at the FP cache management unit 422(step S53), and the fingerprint cache 44 is searched through by usingthis fingerprint value as a key (step S54).

When a set of this fingerprint value and the corresponding data isregistered in the fingerprint cache 44 (step S55 YES), the receivedrequest message is converted into the FP compression format (of FIG. 8B,for example) by using this fingerprint value at the FPcompression/decompression processing unit 425, and transmitted to theserver side proxy 30 from the transmission unit 43 (step S56).

On the other hand, when a set of this fingerprint value and thecorresponding data is not registered in the fingerprint cache 44 as aresult of the search of the step S54 (step S55 NO), the following twooperations are carried out.

(1) The received request message is converted into a non-FP compressionformat (of FIG. 8A, for example) (by using this fingerprint valueaccording to the need) at the FP compression/decompression processingunit 425, and transmitted to the server side proxy 30 from thetransmission unit 43 (step S57).

(2) This fingerprint value and this request data are set incorrespondence (the fingerprint value is set as a key) and registeredinto the fingerprint cache 44 at the FP cache management unit 422 (stepS58).

Note that these operations (1) and (2) can be carried out in any desiredorder or in parallel.

Next, FIG. 28 shows an exemplary processing procedure of the server sideproxy 30 at a time of transferring the request message from the clientside proxy 40 to the server side proxy 30. Note that, in this case, theprocedure of. FIG. 43 or the procedure of FIG. 44 and 45 described aboveare unnecessary.

The server side proxy 30 receives the request message from the clientside proxy 40 at the reception unit 31 (step S61).

The FP compression judgement unit 321 checks and judges whether therequest data of this request message is a target for applying the FPcompression or not (step S62). When the request data is judged as not atarget for applying the FP compression (step S62 NO), the receivedrequest message is transferred to the server 20 from the transmissionunit 33 (step S70).

When the request data of this request message is judged as a target forapplying the FP compression at the step S62, the FP compressionjudgement unit 321 also checks and judges whether the request data is FPcompressed or not (step S63).

When the request data of this request message is judged as FP compressed(as shown in FIG. 8B, for example) at the step S63, the fingerprintvalue of this request data is obtained at the FP cache management unit322.(step S64), and the fingerprint cache 34 is searched through byusing this fingerprint value as a key (step S65).

Then, the data corresponding to this fingerprint value obtained from thefingerprint cache 34 is attached to the received request message and aspecial information to be used between the proxies is deleted in thecase of using such an information at the FP compression/decompressionprocessing unit 325, and the resulting request message is transmitted tothe server 20 from the transmission unit 33 (step S66).

On the other hand, when the request of this request message is Judged asnot FP compressed (as shown in FIG. 8A, for example) at the step S63,the following two operations are carried out.

(1) The special information to be used between the proxies is deletedfrom the received request message in the case of using such aninformation at the FP compression/decompression processing unit 325, andthe resulting request message is transmitted to the server 20 from thetransmission unit 33 (step S68).

(2) The fingerprint value of this request data is obtained (step S67),and this fingerprint value and this request data are set incorrespondence (the fingerprint value is set as a key) and registeredinto the fingerprint cache 34 at the FP cache management unit 322 (stepS69).

Note that these operations (1) and (2) can be carried out in any desiredorder or in parallel.

Similarly as described above, the step S67 can use a method forobtaining the fingerprint from the message when the fingerprint isdescribed in the message or a method for calculating the fingerprintvalue by using the hash function or the like from the request data whenthe fingerprint is not described in the message. It is also possible touse a method for calculating the fingerprint value from the request dataeven when the fingerprint is described in the message.

Note also that it is possible to carry out the step S64 or the step S67between the step S62 and the step S63, and it is also possible to carryout the step S57 between the step S68 and the step S69. Note also thatthe judgement of the step S62 and the judgement of the step S63 can bemade simultaneously.

In the case where even the request data is to be replaced with thefingerprint in this way, at a time of uploading the same file to theserver many times, for example, it suffices to send the fingerprint inthe second and subsequent times so that the network traffic can bereduced.

Of course, in this case, a configuration regarding the shared cache forthe reply data corresponding to the URL specified by the request messagetransmitted from the client as described above can be provided in theserver side proxy 30 and/or the client side proxy 40. FIG. 29 shows anexemplary configuration of the proxy (which can be either one of theserver side proxy and the client side proxy) in this case. Theoperations of the server side proxy 30 and the client side proxy 40 inthis case are the same as those described above.

Note that, in this embodiment, the cases of handling the request messageto be transferred from the client side proxy to the server side proxy orthe reply message to be transferred from the server side proxy to theclient side proxy have been described, but in the case where one proxyis connected with both a device for transmitting the request message anda device for transmitting the reply message, or with a device fortransmitting both the request message and the reply message, it is ofcourse possible to handle the request message and the reply message tobe transferred from the client side proxy to the server side proxy aswell as the request message and the reply message to be transferred fromthe server side proxy to the client side proxy. It is also possible tohandle only the request message to be transferred from the client sideproxy to the server side proxy and the request message to be transferredfrom the server side proxy to the client side proxy, for example.

Now, up to this point, the embodiment using one-to-one communicationsbetween one server side proxy and one client side proxy has beendescribed, but the present invention is not limited to a system usingone-to-one communications between the server side proxy and the clientside proxy and also applicable to a system using one-to-multiplecommunications between the server side proxy and the client sideproxies, a system using multiple-to-one communications between theserver side proxies and the client side proxy, and a system usingmultiple-to-multiple communications between the server side proxies andthe client side proxies. For example, as shown in FIG. 30, the clientside proxies provided at a plurality of user's offices and/or thepersonal proxies utilized by the mobile users can share the server sideproxy.

Also, up to this point, the embodiment in which the entire datacontained in one message is a target for applying the FP compression (atarget for the registration into the fingerprint cache) has beendescribed, but in the case where the data contained in one message isformed by a set of prescribed unit data, for example, it is alsopossible to set only a part of the unit data contained in one message asa target for applying the FP compression (a target for the registrationinto the fingerprint cache).

For example, in FIG. 46, the entire request data contained in therequest message of the PUT method is a target for the registration intothe fingerprint cache. However, on the Web, a plurality of data areoften bundled together into one data and exchanged over the network bythe scheme called MIME encoding, for example. For this reason, in thecase where the request data contains a plurality of data bundledtogether by the MIME encoding, the entire request data and all theindividual data obtained by decoding the MIME encoding, or only thosedata that are selected from them according to a prescribed selectioncriterion, can be set as a target for applying the FP compression. Inthis case, it is possible to obtain the fingerprint for each individualdata and register each individual data into the fingerprint cache byusing the fingerprint as a name.

As a criterion for selecting the data to be registered into thefingerprint cache from the entire request data and all the individualdata obtained by decoding the MIME encoding, any of the followingcriteria or their combinations can be used, for example.

-   -   data with a size larger than a prescribed size    -   data of a prescribed type

The selection of the data to be registered into the fingerprint cachecan be realized by providing the same criterion at both the server sideproxy and the client side proxy such that each proxy Judges andregisters the appropriate data, for example. It is also possible for theserver side proxy to return an information indicating the selected data(that contains a set of the order of each selected data in a sequence ofa plurality of MIME encoded data and its fingerprint value as many asnecessary) in the reply header or the like, such that the client sideproxy registers the specified data into the fingerprint cache accordingto that information, for example. Also, when the fingerprint values ofthose data that are registered into the fingerprint cache at the serverside proxy are entered in the reply header or the like and sent to theclient side server, it is possible to omit a task for calculating thefingerprint at the client side proxy.

Of course, the scheme for decoding the MIME encoded data into individualdata and register them into the fingerprint cache as described here isapplicable not only to the request data but also to the reply data.

As described, according to the present invention, correspondencesbetween data and their names are registered at the data transfer devicesand the corresponding names are transferred, instead of transferring thedata, for those data for which the correspondences are registered, sothat it is possible to reduce the amount of transfer data among the datatransfer devices.

For example, even when the reply message of the GET method is a privatedata, it is possible to compress this message by using the fingerprintand transfer it between the data transfer devices. Also, for example,even when the reply message of the GET method is a dynamic data, it ispossible to compress this message by using the fingerprint and transferit between the data transfer devices as long as the content of the datais the same. Also, for example, even in the case of using the POSTmethod, it is possible to compress the data by using the fingerprint andtransfer it between the data transfer device as long as the resultingdata is the same.

Also, for example, by registering the data written by the PUT methodinto the fingerprint cache, when this data is to be read out as a resultof the GET method or the POST method, it is possible to compress thisdata by using the fingerprint and transfer it between the data transferdevices.

It is to be noted that the above described embodiments according to thepresent invention may be conveniently implemented using a conventionalgeneral purpose digital computer programmed according to the teachingsof the present specification, as will be apparent to those skilled inthe computer art. Appropriate software coding can readily be prepared byskilled programmers based on the teachings of the present disclosure, aswill be apparent to those skilled in the software art.

In particular, each one of the server side proxy and the client sideproxy of the above described embodiments can be conveniently implementedin a form of a software package.

Such a software package can be a computer program product which employsa storage medium including stored computer code which is used to programa computer to perform the disclosed function and process of the presentinvention. The storage medium may include, but is not limited to, anytype of conventional floppy disks, optical disks, CD-ROMs,magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or opticalcards, or any other suitable media for storing electronic instructions.

It is also to be noted that the fingerprint used in the above describedembodiments can be replaced by the fingerprint calculated as describedabove plus some additional information.

It is also to be noted that, besides those already mentioned above, manymodifications and variations of the above embodiments may be madewithout departing from the novel and advantageous features of thepresent invention. Accordingly, all such modifications and variationsare intended to be included within the scope of the appended claims.

1. A data transfer method at a data transfer device for receiving firstdata transmitted from a first communication device, transmitting thefirst data to another data transfer device connected to a secondcommunication device that is a destination of the first data, receivingsecond data transmitted from the second communication device from theanother data transfer device, and transmitting the second data to thefirst communication device that is a destination of the second data, thedata transfer method comprising: receiving the first data from the firstcommunication device; judging whether a first data name that isgenerated according to a content of the first data and assigned to thefirst data is registered in a cache unit configured to register cachedata that were transmitted to the another data transfer device in pastin correspondence to cache data names each of which is generatedaccording to a content of each cache data and assigned to each cachedata; and carrying out a processing for transmitting the first dataname, instead of transmitting the first data, when the first data nameis registered in the cache unit, or a processing for registering thefirst data in correspondence to the first data name into the cache unitand transmitting the first data when the first data name is notregistered in the cache unit, wherein the first data name to be assignedto the first name is also transmitted at a time of transmitting thefirst data to the another data transfer device as the first data name isnot registered in the cache unit.
 2. The data transfer method of claim1, wherein the cache unit registers the cache data names each of whichis a value obtained by compressing each cache data by a prescribedmethod, and the first data name which is a value obtained by compressingthe first data by the prescribed method is transmitted or registered. 3.The data transfer method of claim 1, wherein the cache unit registersthe cache data names each of which is a value obtained by applying aprescribed hash function to each cache data, and the first data namewhich is a value obtained by applying the prescribed hash function tothe first data is transmitted or registered.
 4. The data transfer methodof claim 1, wherein the first data name is transmitted and the firstdata is registered into the cache unit at least with respect to a dataof a reply message which is not null.
 5. The data transfer method ofclaim 1, wherein data that satisfy a prescribed condition is excludedfrom targets for carrying out a registration into the cache unit.
 6. Thedata transfer method of claim 1, wherein the data transfer device isconnected to the first communication device through a local areanetwork.
 7. The data transfer method of claim 1, wherein the datatransfer device is provided in a form of a software implemented on thefirst communication device.
 8. The data transfer method of claim 1,wherein when the first data received from the first communication deviceis registered into the cache unit and the first data is a data of areply message corresponding to a request message from the secondcommunication device to the first communication device, a URL forrequested data of the request message corresponding to the reply messageis also registered in correspondence to the first data name into thecache unit or another cache unit; and when the request messagetransmitted by the second communication device is received from theanother data transfer device and the URL for the requested data of therequest message is registered in the cache unit or the another cacheunit, the reply message corresponding to the request message anddestined to the second communication device according to the requesteddata registered in the cache unit or the another cache unit incorrespondence to the first data name corresponding to the URL is alsoproduced, and the reply message is transmitted to the another datatransfer device.
 9. The data transfer method of claim 8, wherein therequest message of a GET method is received.
 10. The data transfermethod of claim 1, wherein the data transfer device is connected to thefirst communication device which is a server device, while the anotherdata transfer device is connected to the second communication devicewhich is a client device.
 11. The data transfer method of claim 1,wherein at a time of transmitting the second data received from theanother data transfer device to the first communication device, aprocessing for registering the second data in correspondence to a seconddata name that is generated according to a content of the second dataand assigned to the second data into the cache unit is also carried out,when the second data name is not registered in the cache unit.
 12. Thedata transfer method of claim 11, wherein when the second data is a dataof a request message, the second data is registered into the cache unitupon receiving a reply message corresponding to the request message. 13.The data transfer method of claim 11, wherein when the second data is adata of a request message, the second data is registered into the cacheunit before receiving a reply message corresponding to the requestmessage.
 14. The data transfer method of claim 11, wherein when thesecond data is formed by a plurality of unit data, each one of all theunit data or a part of the unit data that satisfy a prescribed conditionis registered into the cache unit in correspondence to each unit dataname that is generated according to a content of each unit data andassigned to each unit data.
 15. The data transfer method of claim 14,wherein the second data is applied with a MINE encoding, and the unitdata is obtained by decoding the MIME encoding.
 16. A data transfermethod at a data transfer device for receiving first data transmittedfrom a first communication device through another data transfer device,transmitting the first data to a second communication device that is adestination of the first data, receiving second data transmitted fromthe second communication device, and transmitting the second data to theanother data transfer device connected to the first communication devicethat is a destination of the second data, the data transfer methodcomprising: receiving the first data or a first data name that isgenerated according to a content of the first data and assigned to thefirst data, from the another data transfer device; and carrying out aprocessing for acquiring a cache data registered in correspondence tothe first data name from a cache unit configured to register cache datathat were received from the another data transfer device in past incorrespondence to cache data names each of which is generated accordingto a content of each cache data and assigned to each cache data, andtransmitting an acquired cache data when the first data name is receivedfrom the another data transfer device, or a processing for registeringthe first data in correspondence to the first data name to be assignedto the first data into the cache unit and transmitting the first datawhen the first data is received from the another data transfer device,wherein the first data is registered in correspondence to the first dataname into the cache unit when the first data name is received from theanother data transfer device along with the first data.
 17. The datatransfer method of claim 16, wherein the cache unit registers the cachedata names each of which is a value obtained by compressing each cachedata by a prescribed method, and the first data name which is a valueobtained by compressing the first data by the prescribed method isregistered.
 18. The data transfer method of claim 16, wherein the cacheunit registers the cache data names each of which is a value obtained byapplying a prescribed hash function to each cache data, and the firstdata name which is a value obtained by applying the prescribed hashfunction to the first data is registered.
 19. The data transfer methodof claim 16, wherein the acquired cache data or the first data name istransmitted and the first data is registered into the cache unit atleast with respect to a data of a reply message which is not null. 20.The data transfer method of claim 16, wherein data that satisfy aprescribed condition is excluded from targets for carrying out aregistration into the cache unit.
 21. The data transfer method of claim16, wherein the data transfer device is connected to the secondcommunication device through a local area network.
 22. The data transfermethod of claim 16, wherein the data transfer device is provided in aform of a software implemented on the second communication device. 23.The data transfer method of claim 16, wherein when the first datareceived from the another data transfer device is registered into thecache unit and the first data is a data of a reply message correspondingto a request message from the second communication device to the firstcommunication device, a URL for requested data of the request messagecorresponding to the reply message is also registered in correspondenceto the first data name into the cache unit or another cache unit; andwhen the request message is received from the second communicationdevice and the URL for the requested data of the request message isregistered in the cache unit or the another cache unit, the replymessage corresponding to the request message according to the requesteddata registered in the cache unit or the another cache unit incorrespondence to the first data name corresponding to the URL is alsoproduced, and the reply message is transmitted to the secondcommunication device.
 24. The data transfer method of claim 23, whereinthe request message of a GET method is received.
 25. The data transfermethod of claim 16, wherein the data transfer device is connected to thesecond communication device which is a client device, while the anotherdata transfer device is connected to the first communication devicewhich is a server device.
 26. The data transfer method of claim 16,wherein at a time of transmitting the second data received from thesecond communication device to the another data transfer device, aprocessing for registering the second data in correspondence to a seconddata name that is generated according to a content of the second dataand assigned to the second data into the cache unit is also carried out,when the second data name is not registered in the cache unit.
 27. Thedata transfer method of claim 26, wherein when the second data is a dataof a request message, the second data is registered into the cache unitupon receiving a reply message corresponding to the request message. 28.The data transfer method of claim 26, wherein when the second data is adata of a request message, the second data is registered into the cacheunit before receiving a reply message corresponding to the requestmessage.
 29. The data transfer method of claim 26, wherein when thesecond data is formed by a plurality of unit data, each one of all theunit data or a part of the unit data that satisfy a prescribed conditionis registered into the cache unit in correspondence to each unit dataname that is generated according to a content of each unit data andassigned to each unit data.
 30. The data transfer method of claim 29,wherein the second data is applied with a MIME encoding, and the unitdata is obtained by decoding the MIME encoding.